package com.marvels.approve.consum;


import com.github.pagehelper.PageInfo;
import com.marvels.approve.common.dto.StateDetailedDTO;
import com.marvels.approve.loan.dto.*;
import com.marvels.approve.manager.dto.ApprovalProcessConditionDTO;
import com.marvels.approve.manager.dto.ApprovalProcessInfoDTO;
import com.marvels.common.dto.MarvelsResultDTO;
import com.marvels.common.exception.MarvelsBusinessException;

import java.util.List;
import java.util.Map;


/**
 * 调用外部应用服务接口
 * name：外部应用名称
 * fallback：调用外部服务失败的实现类
 * @RequestMapping：外部服务的uri
 * @RequestParam：外部服务的入参
 * @author wangliang
 *
 */
public interface ApproveConsumerLoanApplyApi {
	/**
	 * 附件信息
	 * @param atmtType
	 * @param loanIds
	 * @param fileId
	 * @return
	 */
	public List<LaAttachmentDto> achieveAttachInfo(LaAttachmentDto laAttachmentDto);
	
	
	/**
	 * 合同对应的附件信息
	 * @param fileId
	 * @param loanIds
	 * @return
	 */
	public List<LaAttachmentDto> compactAttach(LaAttachmentDto laAttachmentDto);
	
	
	
	
	/**
	 * 合同对应的附件信息
	 * @param fileId
	 * @param loanIds
	 * @return
	 */
	public MarvelsResultDTO getRelationList();
	
	
	
	/**
	 * 查询流程状态
	 * @param dto
	 * @return
	 */
	public List<StateDetailedDTO> queryStateDetailed(StateDetailedDTO dto);
	/**
	 * 查询合同模板
	 * @param templateNo
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public MclaProtocolTemplateInfoDTO selectMclaProtocolTemplateInfo(String templateNo)throws MarvelsBusinessException;

	public Map<String,String> queryUserNameBymobiles(String mobiles);
	
	
	public String selectUserIdByName(String userName);
	
	/**
	 * 根据进件状态id查询中文状态
	 * @param stateId
	 * @return
	 */
	public String selectLoanStateNameById(String stateId);
	
	/**
	 * 查询进件扩展信息
	 * @param loanExtDataDTO
	 * @return
	 */
	public LoanExtDataDTO selectLoanExtData(LoanExtDataDTO loanExtDataDTO);
	
	/**
	 * 获取入驻渠道列表
	 * @param dto
	 * @return
	 */
	public List<UserChannelInfoResultDTO> selectUserChannelList(UserChannelInfoParamDTO dto);
	
	/**
	 * 进件列表查询
	 * @param dto
	 * @return
	 */
	public PageInfo<ApprovalProcessInfoDTO> loanListQuery(ApprovalProcessConditionDTO dto);
}
